2-2 自然言語と単語の分散表現 『ゼロから作るDeep Learning 2』
自然言語処理の歴史と、どうやって近年の単語ベクトル化に至ったかについてが書かれている シソーラスを使う手法には問題点があった
ニューラルネットワークを使った推論ベースの手法へ進んだ コーパスを扱う
例文:you say goodbye and i say hello.
まず単語に分割し、各単語にIDを振り、単語-ID、ID-単語の対応リスト(辞書)を作る id_to_word{0: 'you', 1: 'say', 2: 'goodbye', 3: 'and', 4: 'i', 5: 'hello', 6: '.'}
word_to_id{'you': 0, 'say': 1, 'goodbye': 2, 'and': 3, 'i': 4, 'hello': 5, '.': 6}
1単語目のyouはコンテキストが1つ
2単語目のsayは2回出現するので、コンテキストが4つ
これらを数列で表すと、先ほどつくった対応リストにしたがってベクトルとして表すと
you{0,1,0,0,0,0,0}
say{1,0,1,0,1,1,0}
となる
code:共起行列.py
from common.util import create_co_matrix
C = create_co_matrix(corpus,7)
print(C)
ウィンドウサイズは本来左右均等ではないが、本書では単純さを優先し、左右均等とする
ベクトルの次元削除に関しては、本書では簡単にしか触れられておらず詳細がわからないので別の本を読んで詳しいことを知る必要があるcak.icon
hr.icon
目次
2-2 自然言語と単語の分散表現 『ゼロから作るDeep Learning 2』
2.1 自然言語処理とは
2.1.1 単語の意味
2.2 シソーラス
2.2.1 WordNet
2.2.2 シソーラスの問題点
2.3 カウントベースの手法
2.3.1 Pythonによるコーパスの下準備
2.3.2 単語の分散表現
2.3.3 分布仮説
2.3.4 共起行列
2.3.5 ベクトル間の類似度
2.3.6 類似単語のランキング表示
2.4 カウントベースの手法の改善
2.4.1 相互情報量
2.4.3 SVDによる次元削減
2.4.5 PTBデータセットでの評価
2.5 まとめ